<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>103_一个小问题</title>
		<script>
			/* 
			目前我们的函数只能过滤出数组中age属性小于18的对象，
			我们希望过滤更加灵活:
				比如:过滤数组中age大于18的对象
							  age大于60的对象
				              age大于n的对象
				    过滤数组中name为xxx的对象
				    过滤数组中的偶数
			
			一个函数的参数也可以是函数，
				如果将函数作为参数传递，那么我们就称这个函数为回调函数(callback)
			 */
			class Person {
				constructor(name, age) {
					this.name = name;
					this.age = age;
				}
			}
			const personArr = [new Person("孙悟空", 9), new Person("猪八戒", 20), new Person("唐僧", 10)];

			function filler(arr, cb) {
				const tempArr = []
				for (let i = 0; i < arr.length; i++) {
					if (cb(arr[i])) {
						tempArr.push(arr[i]);
					}
				}
				return tempArr;
			}

			function fn(a) {
				return a.age < 18;
			}

			ret = filler(personArr, fn);
			console.log("年龄小于18的是", ret);
		</script>
	</head>
	<body>
	</body>
</html>